#include <iostream>
#include <jsoncpp/json/json.h>

// Json常见格式 {a:100, b:"123"}  内部是一组kv结构的数据
int main()
{
    Json::Value root;   // Value：万能对象，可以存储任意类型的数据

    // 将数据设置为Json格式
    root["x"] = 100;    
    root["y"] = 200;
    root["op"] = '+';
    root["dest"] = "this is a + operation";

    Json::FastWriter w1;      // 字符串输出
    std::string ret1 = w1.write(root);  // 序列化
    std::cout << "字符串输出：" << ret1 << std::endl;

    Json::StyledWriter w2;       // 格式化输出（可读性强）
    std::string ret2 = w2.write(root);  // 序列化
    std::cout << "格式化输出：\n" << ret2 << std::endl;

    Json::Value v;
    Json::Reader r;     // 反序列化
    r.parse(ret2, v);    // 第一个参数为反序列化的对象，第二个参数为反序列化后的结果对象

    int x = v["x"].asInt();     // 提取数据
    int y = v["y"].asInt();
    char op = v["op"].asInt();  // 字符本身也是一种整数
    std::string dest = v["dest"].asString();

    std::cout << "反序列化结果：\n";
    std::cout << x << "\n";
    std::cout << y << "\n";
    std::cout << op << "\n";
    std::cout << dest << "\n";
    return 0;
}